package org.Shiikong_Memory.SakuraBlockFrame.CommandFramework;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 该注解用于标记命令框架中的方法参数，可对参数的类型、是否为可选项以及描述信息进行配置。
 *
 * @author Shiikong_Memory
 * @version 1.0
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface Arg {
    /**
     * 指定参数的类型，默认值为 ArgType.Auto。
     * 推测 ArgType 是一个枚举类型，用于定义不同的参数类型。
     *
     * @return 参数的类型
     */
    ArgType type() default ArgType.Auto;
    /**
     * 标识该参数是否为可选项（非必要参数），默认值为 false。
     *
     * @return 如果为 true 表示该参数是可选项，否则为必选参数
     */
    boolean options() default false;   // 是否未可选项（非必要参数）
    /**
     * 对参数进行描述的信息，默认值为空字符串。
     *
     * @return 参数的描述信息
     */
    String description() default "";
}